﻿/*----------------------------------------------------------------
// Copyright (C) 2016 苏州，顾宏
//
// 模块名：world_base
// 创建者：Macro Gu
// 修改者列表：
// 创建日期：2016.1.5
// 模块描述：base服务器游戏世界逻辑相关
//----------------------------------------------------------------*/

#include "world_base.h"

#include "asio/asio_server.h"  // for GetIoService()
#include "cfg_reader.h"  // for GetOptValue()
#include "log.h"
#include "lua_rpc_router.h"  // for LuaRpcRouter
#include "multi_task/multi_task_mgr.h"  // for MultiTask

#include <stdlib.h>

const char LOG_NAME[] = "CWorldBase";

CWorldBase::CWorldBase()
{
}

CWorldBase::~CWorldBase()
{
}

bool CWorldBase::init(const char* pszEtcFile)
{
	LOG_INFO("init()");

	if (!CWorld::init(pszEtcFile))
	{
		return false;
	}

	unsigned threadnum = atoi(GetCfgReader()->GetOptValue("multi_task", "threadnum", "8").c_str());
	MultiTask::Mgr::get_mutable_instance().Run(&GetServer()->GetIoService(), threadnum);	//启动多任务管理器

	if (!DoLuaInitFile("base/init_base.lua"))
	{
		return false;
	}
	return true;
}

void CWorldBase::InitLua()
{
	CWorld::InitLua();
	LuaRpcRouter::Bind(GetLuaState());
}
